java outOfMemoryError 与 stringbuilder
全部标签 是否有提供高效字符串连接功能的C++标准模板库类,类似于C#的StringBuilder或Java的StringBuffer? 最佳答案 C++方法是使用std::stringstream或者只是简单的字符串连接。C++字符串是可变的,因此连接的性能考虑不太重要。关于格式化,您可以对流进行所有相同的格式化,但inadifferentway,similartocout.或者你可以使用一个强类型的仿函数来封装它并提供一个类似String.Format的接口(interface),例如boost::format
这个问题在这里已经有了答案:StringBuildervsStringconcatenationintoString()inJava(20个回答)关闭8年前。在Java中,通常最好使用StringBuilder进行字符串连接。总是这样吗?我的意思是:是创建StringBuilder对象,调用append()方法,最后调用toString()的开销吗?已经比使用+运算符连接两个字符串的现有字符串更小了,还是只建议用于超过(两个)字符串?如果有这样一个阈值,它取决于什么(可能是字符串长度,但是以哪种方式)?最后,您会用+连接的可读性和简洁性来换取StringBuilder在较小情况下(例如
我第一次遇到StringBuilder并感到惊讶,因为Java已经有一个非常强大的String类允许追加。为什么要有第二个String类?在哪里可以了解有关StringBuilder的更多信息? 最佳答案 String不允许追加。您在String上调用的每个方法都会创建一个新对象并返回它。这是因为String是不可变的-它不能改变其内部状态。另一方面,StringBuilder是可变的。当您调用append(..)时,它会更改内部char数组,而不是创建一个新的字符串对象。因此更高效的是:StringBuildersb=newStr
我第一次遇到StringBuilder并感到惊讶,因为Java已经有一个非常强大的String类允许追加。为什么要有第二个String类?在哪里可以了解有关StringBuilder的更多信息? 最佳答案 String不允许追加。您在String上调用的每个方法都会创建一个新对象并返回它。这是因为String是不可变的-它不能改变其内部状态。另一方面,StringBuilder是可变的。当您调用append(..)时,它会更改内部char数组,而不是创建一个新的字符串对象。因此更高效的是:StringBuildersb=newStr
我只能用String来做这个,例如:Stringstr="";for(inti=0;i有没有办法通过StringBuilder实现这一点?谢谢。 最佳答案 StringBuildersb=newStringBuilder();for(inti=0;i警告:它违背了StringBuilder的目的,但它会按照您的要求进行操作。更好的技术(虽然仍然不理想):反转每个要插入的字符串。追加每个字符串到一个StringBuilder。完成后将整个StringBuilder反转。这会将O(n²)解变成O(n)。
我只能用String来做这个,例如:Stringstr="";for(inti=0;i有没有办法通过StringBuilder实现这一点?谢谢。 最佳答案 StringBuildersb=newStringBuilder();for(inti=0;i警告:它违背了StringBuilder的目的,但它会按照您的要求进行操作。更好的技术(虽然仍然不理想):反转每个要插入的字符串。追加每个字符串到一个StringBuilder。完成后将整个StringBuilder反转。这会将O(n²)解变成O(n)。
我刚刚在我的项目中发现了一些这样的sql查询构建:return(newStringBuilder("selectid1,"+"id2"+"from"+"table")).toString();这个StringBuilder是否达到了它的目的,即减少内存使用?我对此表示怀疑,因为在构造函数中使用了“+”(字符串连接运算符)。这会像使用下面的代码那样占用与使用String相同的内存量吗?我理解,使用StringBuilder.append()时会有所不同。return"selectid1,"+"id2"+"from"+"table";两个语句的内存使用量是否相等?请说清楚。提前致谢!编辑:
我刚刚在我的项目中发现了一些这样的sql查询构建:return(newStringBuilder("selectid1,"+"id2"+"from"+"table")).toString();这个StringBuilder是否达到了它的目的,即减少内存使用?我对此表示怀疑,因为在构造函数中使用了“+”(字符串连接运算符)。这会像使用下面的代码那样占用与使用String相同的内存量吗?我理解,使用StringBuilder.append()时会有所不同。return"selectid1,"+"id2"+"from"+"table";两个语句的内存使用量是否相等?请说清楚。提前致谢!编辑:
我有一个StringBuilder对象,StringBuilderresult=newStringBuilder();result.append(someChar);现在我想在StringBuilder中添加一个换行符。我该怎么做?result.append("/n");不起作用。因此,我正在考虑使用Unicode编写换行符。这会有帮助吗?如果是这样,我怎样才能添加一个? 最佳答案 应该是r.append("\n");但我建议您按照以下方式进行操作,r.append(System.getProperty("line.separato
我有一个StringBuilder对象,StringBuilderresult=newStringBuilder();result.append(someChar);现在我想在StringBuilder中添加一个换行符。我该怎么做?result.append("/n");不起作用。因此,我正在考虑使用Unicode编写换行符。这会有帮助吗?如果是这样,我怎样才能添加一个? 最佳答案 应该是r.append("\n");但我建议您按照以下方式进行操作,r.append(System.getProperty("line.separato